home *** CD-ROM | disk | FTP | other *** search
/ Power Programmierung / Power-Programmierung (Tewi)(1994).iso / magazine / progjour / 1988 / 01 / listing4.c < prev    next >
Text File  |  1987-12-28  |  2KB  |  64 lines

  1.   /*
  2.    * timer    -----   Gives a rough execution time of a particular process
  3.    *
  4.    * Uses:
  5.    *
  6.    *      timer.c     -   Picks off cmd line and assembles it for spawnvp()
  7.    *      gettime.c   -   Pulls clock ticks from MS-DOS
  8.    *
  9.    *   Copyright by Frank D. Greco, 1987
  10.    *   Page 50, Volume 6.1 Programmer's Journal
  11.    */
  12.   
  13.   #include <stdio.h>
  14.   #include <process.h>
  15.   #include <dos.h>
  16.   #include <errno.h>
  17.   #include "timer.h"
  18.   
  19.   #define NO_ERR      0       /* No error to return to the shell */
  20.   #define NO_ARGS     1       /* If nothing to time, return this value */
  21.   
  22.   extern int errno;
  23.   
  24.   main(argc,argv)
  25.   char **argv;
  26.   {
  27.       char *bp;                   /* Ptr to command to be spawned */
  28.       unsigned long gettime();    /* Gets clock ticks from MS-DOS */
  29.       int ret;                    /* To save the return value of spawn() */
  30.   
  31.       if (argc == 1)      /* If nothing to time, bye-bye */
  32.           exit(NO_ARGS);
  33.   
  34.       bp = argv[1];       /* We need to avoid problems with side effects,
  35.                            * so use another ptr to the command to be spawned.
  36.                            */
  37.   /*
  38.    * Now time the requested command 
  39.    */
  40.       TIME(ret = spawnvp(P_WAIT, bp, ++argv), bp);
  41.       
  42.       if ( ret == -1 )        /* In case of an error with spawn */
  43.           switch (errno)
  44.           {
  45.               case ENOENT:    fprintf(stderr, "File '%s' not found\n", bp);
  46.                               exit(1);
  47.   
  48.               case ENOMEM:    fprintf(stderr, "%s to run '%s'\n", 
  49.                                   "Not enough memory", bp);
  50.                               exit(2);
  51.   /*
  52.    *  Spawn() does not appear to recognize invalid executables properly, 
  53.    *  so it appears that the following error (i.e., ENOEXEC) will 
  54.    *  unfortunately never be caught.
  55.    */
  56.               case ENOEXEC:   fprintf(stderr, "Cannot execute '%s'\n", bp);
  57.                               exit(3);
  58.   
  59.               default:        fprintf(stderr, "Cannot spawn '%s'\n", bp);
  60.                               exit(4);
  61.           }
  62.       exit(NO_ERR);       /* Good Housekeeping */
  63.   }
  64.